package com.xique.park.service.biz.service;

import com.xique.common.core.web.domain.AjaxResult;
import com.xique.park.bean.domain.BaseUser;
import com.xique.park.bean.domain.ParkCar;
import com.xique.park.bean.dto.ParkUserDTO;
import com.xique.park.bean.request.app.ParkCarAddRequest;
import com.xique.park.bean.request.app.ParkCarEditRequest;
import com.xique.park.bean.request.app.ParkUserListRequest;
import com.xique.park.bean.request.app.ParkUserUniqueCheckRequest;
import com.xique.park.bean.request.web.car.ParkUserSaveRequest;
import com.xique.park.bean.request.web.user.AddUserRequest;
import com.xique.park.bean.request.web.user.SelectParkUserRequest;
import com.xique.park.bean.request.web.user.UpdateUserRequest;
import com.xique.park.bean.search.app.ParkUserListSearch;

import java.util.List;

/**
 * 车场用户service
 */
public interface IParkUserBizService {
    /**
     * 获取用户列表
     * @author lxl
     * @date 2021/12/14
     * @param request
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult getParkUserList(ParkUserListRequest request);

    /**
     * 获取某个车主的具体信息
     * @param parkUserId
     * @return
     */
    BaseUser getParkUser(Long parkUserId);

    /**
     * 根据用户的信息（姓名、电话、地址等）查出user表中的id集合，即车辆表中的park_user_id
     * @param search
     * @return
     */
    List<ParkUserDTO> getParkUserIdList(ParkUserListSearch search);

    /**
     * 车主手机号唯一性校验
     * @param request
     * @return
     */
    AjaxResult checkPhoneUnique(ParkUserUniqueCheckRequest request);

    /**
     * 添加车辆，车主信息处理
     * @param request
     * @return userId（t_user表的主键id）
     */
    Long addCarParkUserHandle(ParkCarAddRequest request,Long parkId);

    /**
     * 车主信息处理
     * 如果车辆中，parkUserId为空，但是用户名和手机号不为空，则新插入用户表记录，
     * @param parkCar
     * @return
     */
    ParkUserDTO parkUserHandle(ParkCar parkCar);

    /**
     * 编辑车辆，车主信息处理
     * @param request
     * @return userId（t_user表的主键id）
     */
    Long editCarParkUserHandle(ParkCarEditRequest request,Long parkId);

    /****************web方法*****************/

    /**
     * 保存车主信息
     * @param request
     * @return
     */
    AjaxResult saveParkUser(ParkUserSaveRequest request);

    /**
     * 查询车主列表
     * @param request
     * @return
     */
    AjaxResult getWebParkUserList(ParkUserListRequest request);

    /**
     * 添加车辆，车主信息处理
     * @param request
     * @return userId（t_user表的主键id）
     */
    Long addWebCarParkUserHandle(ParkCarAddRequest request,Long parkId);

    /**
     * 编辑车辆，车主信息处理
     * @param request
     * @return userId（t_user表的主键id）
     */
    Long editWebCarParkUserHandle(ParkCarEditRequest request,Long parkId);


    /**
     * @author caogq
     * @description:  停车系统查询用户
     * @date: 2022/6/14 12:28
     * @Param [request]
     */
    AjaxResult conditionList(SelectParkUserRequest request);

    /**
     * @author caogq
     * @description:  停车系统删除用户
     * @date: 2022/6/14 14:12
     * @Param [ids]
     */
    AjaxResult delete(String ids);

    /**
     * @author caogq
     * @description:  新增用户
     * @date: 2022/6/14 14:27
     * @Param [request]
     */
    AjaxResult add(AddUserRequest request);

    /**
     * @author caogq
     * @description:  修改用户
     * @date: 2022/6/14 14:27
     * @Param [request]
     */
    AjaxResult update(UpdateUserRequest request);
}
